#include "table.h"
#include "merge.c"

/**
 * 一趟归并算法
 * @param {table} *tabs
 * @param {table} *tabg
 * @param {int} len
 * @return {void}
 */
void mergepass(table *tabs, table *tabg, int len) {
    int i = 0;
    while(i <= tabs->length - 2 * len) {
        merge(tabs, tabg, i, i + len - 1, i + 2 * len - 1);
        i = i + 2 * len;
    }
    if(i + len < tabs->length) {
        merge(tabs, tabg, i, i + len - 1, tabs->length - 1);
    } else {
        for(int j = i; j < tabs->length; j++) {
            tabg->r[j] = tabs->r[j];
        }
    }
}

int main(){
    table tabs, tabg;
    int len = 1;
    int arr[] = {9, 1, 5, 8, 3, 7, 4, 6, 2};
    
    for(int i = 0; i < 9; i++) {
        tabs.r[i + 1].key = arr[i];
    }
    tabs.length = 9;
    tabg.length = 9;

    mergepass(&tabs, &tabg, len);

    for(int i = 0; i < 9; i++) {
        printf("%d ", tabg.r[i + 1].key);
    }


    return 1;
}